package controller

import (
	"github.com/gin-gonic/gin"
	"net/http"
	"one-project/models"
)

func AddSingleTodo(c *gin.Context)  {
	var todo models.Todo
	c.BindJSON(&todo)

	err := models.CreateSingleTodo(&todo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todo)
	}
}

func GetTodoList(c *gin.Context)  {
	var todoList []models.Todo
	err := models.GetTodoList(&todoList)

	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todoList)
	}
}

func GetSingleTodo(c *gin.Context)  {

}

func UpdateSingleTodo(c *gin.Context)  {
	id, _ := c.Params.Get("id")
	var todo models.Todo

	err := models.GetSingleTodo(id, &todo)

	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
		return
	}

	c.BindJSON(&todo)
	err = models.UpdateSingleTodo(&todo)

	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todo)
	}
}

func DeleteSingleTodo(c *gin.Context)  {
	id, _ := c.Params.Get("id")

	err := models.DeleteSingleTodo(id)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, gin.H{"deleted": id})
	}
}
